package net.perretxiko.controller;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import net.perretxiko.form.Erabiltzaile;
import net.perretxiko.service.ErabiltzaileService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.ui.ModelMap;

@Controller
public class ErabiltzaileController {

	@Autowired
	private ErabiltzaileService erabiltzaileService;
	
//	@RequestMapping("/erregistratu")
//	public ModelAndView showContacts(Map<String, Object> map) {
////		map.put("erabiltzaile", new Erabiltzaile());
////		map.put("erabiltzaileList", erabiltzaileService.listErabiltzaile());
//		
//		return new ModelAndView("erregistratu", "command", new Erabiltzaile());
//	}
	@RequestMapping("/erregistratu")	
	public ModelAndView showContacts(Map<String, Object> map) {
		map.put("erabiltzaile", new Erabiltzaile());
//		map.put("erabiltzaileList", erabiltzaileService.listErabiltzaile());
		
		return new ModelAndView("erregistratu", "command", new Erabiltzaile());
	}
	
//	@RequestMapping("/login")
//	public ModelAndView login(Map<String, Object> map) {
//		map.put("erabiltzaile", new Erabiltzaile());
//		map.put("erabiltzaileList", erabiltzaileService.listErabiltzaile());
//		
//		return new ModelAndView("login", "command", new Erabiltzaile());
//	}
	@RequestMapping("/login")
	public ModelAndView login() {
		
		return new ModelAndView("login");
	}
	
	

	@RequestMapping(value = "/add", method = RequestMethod.POST)
	public String addErabiltzaile(@ModelAttribute("erabiltzaile")
	Erabiltzaile erabiltzaile, BindingResult result, @RequestParam("BirthDay") int day, @RequestParam("BirthYear") int year, @RequestParam("BirthMonth") int month) {		
		String eguna = year+"-"+month+"-"+day;
		erabiltzaile.setJaiotzeeguna(eguna);
		erabiltzaileService.addErabiltzaile(erabiltzaile);
		Erabiltzaile era = erabiltzaileService.getErabiltzaile(erabiltzaile.getErabiltzailea());
		erabiltzaileService.addUser(era.getIdErabiltzaile(), era.getIzena(), era.getPasahitza());
		return "redirect:/login";
	}
	
	@RequestMapping(value="/loginfailed", method = RequestMethod.GET)
	public String loginerror(ModelMap modelo) {
		Object error = true;
		modelo.addObject(error);
		//modelo.addAttribute("error", "true");
		return "login";
 
	}
	
	
	@RequestMapping(value = "/loginaBaieztatu", method = RequestMethod.POST)
	public String loginaBaieztatu(@ModelAttribute("erabiltzaile")
	Erabiltzaile erabiltzaile, BindingResult result) {
		
		
		

		if(erabiltzaileService.baieztatuLogina(erabiltzaile)){
			return "redirect:/home";
		} else {
			return "redirect:/erregistratu";
		}
		
	}

	@RequestMapping("/delete/{erabiltzaileId}")
	public String deleteErabiltzaile(@PathVariable("erabiltzaileId")
	Integer erabiltzaileId) {

		erabiltzaileService.removeErabiltzaile(erabiltzaileId);

		return "redirect:/erabiltzaile";
	}
	
}
